package parserXML
{
	import flash.events.Event;

	/**
	 * Classe qui permet de charger un fichier xml link contenant la description des linkroom
	 * @see XmlObject
	 * @author Arnaud
	 */
	public class XmlLinkRoom extends XmlObject
	{
		private var _id:String;

		private var _name:String;

		private var  _link:Vector.<Object>;

		private var _start_room:String;


		/**
		 * Constructeur
		 * @param type Type du fichier xml
		 * @param path Chemin du fichier xml
		 */
		public function XmlLinkRoom(type:String, path:String)
		{
			super(type, path);
			_link=new Vector.<Object>;
			_id="";
			_name="";
		}

		/**
		 * Demarre le chargement du fichier xml
		 */
		public function chargementFichier():void
		{
			xmlLoader=new XmlLoader(this.path);
			xmlLoader.chargeur.addEventListener(Event.COMPLETE, createObject);
		}

		/**
		 * Charge le fichier xml et envoi un evenement XmlObject.CHARGEMENT_COMPLET
		 */
		private function createObject(e:Event):void
		{
			var xml:XML=new XML(xmlLoader.chargeur.data);

			//Chargement id et name et salle de depart
			this._id=String(xml.@id);
			this._name=String(xml.@name);
			this._start_room=String(xml.RoomStart.@id_room);
			

			//Chargement des linkRoom
			var linkRooms:XMLList=xml.LinkRoom;
			for (var i:int=0; i < linkRooms.length(); i++)
			{
				var linkRoom:Array=new Array;
				
				//Chargement de l'id du linkRoom
				linkRoom[0] = String(linkRooms[i].@id);
				
				//Chargement deux salles connectés
				var rooms:XMLList=linkRooms[i].Rooms;
				var vectRooms:Array=new Array;
				
				var tempArray:Array=new Array;
				var idRoom:String=String(rooms.Room[0].@id_room);
				var idDoor:String=String(rooms.Room[0].@id_door);
				tempArray[0]=idRoom;
				tempArray[1]=idDoor;
				vectRooms[0]=tempArray;
				
				var tempArray1:Array=new Array;
				var idRoom1:String=String(rooms.Room[1].@id_room);
				var idDoor1:String=String(rooms.Room[1].@id_door);
				tempArray1[0]=idRoom1;
				tempArray1[1]=idDoor1;
				vectRooms[1]=tempArray1;
				
				linkRoom[1] = vectRooms;
				
				//Chargement de l'id de la transition
				linkRoom[2] = String(linkRooms[i].Transition.@id);
				
				this._link.push(linkRoom);
			}
			this.dispatchEvent(new Event(XmlObject.CHARGEMENT_COMPLET));
		}

		/**
		 * Vecteur contenant tout les linkRoom du fichier xml de Link
		 * <p>
		 *  [0] -> LinkRoom id 
		 *  <p>
		 * 	[1] -> Tableau à deux entrées de room
		 * <p>
		 *  &#xA0; &#xA0; [0] -> room id |
		 *  [1] -> door id 
		 * </p>
		 * </p>
		 * 	[2] -> transition id 
		 * </p>
		 */
		public function get link():Vector.<Object>
		{
			return _link;
		}

		/**
		 * Salle de départ du groupe de salle
		 */
		public function get start_room():String
		{
			return _start_room;
		}

		/**
		 * @private
		 */
		public function set start_room(value:String):void
		{
			_start_room = value;
		}

		/**
		 * Nom du fichier de Link room
		 */
		public function get name():String
		{
			return _name;
		}

		/**
		 * @private
		 */
		public function set name(value:String):void
		{
			_name = value;
		}

		/**
		 * Identifiant du fichier de linkroom
		 */
		public function get id():String
		{
			return _id;
		}

		/**
		 * @private
		 */
		public function set id(value:String):void
		{
			_id = value;
		}


	}
}